Skip to content

chore(deps): update mise to v2026.8.0 - #2364

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/mise
Open

chore(deps): update mise to v2026.8.0#2364
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/mise

Conversation

@renovate

@renovate renovate Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
jdx/mise uses-with minor v2026.7.5v2026.8.0
mise minor v2026.7.5v2026.8.0

Release Notes

jdx/mise (jdx/mise)

v2026.8.0: : 15% faster shims, multi-language workspaces, and precompiled Ruby

Compare Source

This release makes mise noticeably faster on Linux x64: shims have 15% lower latency, while config-aware commands are 8–11% faster in local release-to-release benchmarks. It also significantly expands the experimental monorepo task workflow with dependency inference across Cargo, uv (Python), Go, and Node workspaces, and makes precompiled Ruby binaries the default.

⚡ Performance: up to 15% lower latency

Official checksum-verified Linux x64 GNU binaries were compared on an AMD Ryzen 9 7950X3D using an isolated offline fixture with warm filesystem caches (20 warmups and 200 measured runs per command):

Workload v2026.7.18 v2026.8.0 Lower latency
Node shim dispatch 6.990 ms 5.929 ms 15.2%
tasks ls 7.353 ms 6.574 ms 10.6%
env -s bash 7.942 ms 7.187 ms 9.5%
current 7.667 ms 6.961 ms 9.2%
settings 5.823 ms 5.331 ms 8.5%
--help 5.036 ms 4.731 ms 6.1%
version 5.108 ms 4.884 ms 4.4%
registry 7.457 ms 7.181 ms 3.7%

Release downloads are smaller as well:

Linux x64 artifact Size change
.tar.xz 11.1% smaller
.tar.gz 5.9% smaller
.tar.zst 5.0% smaller
Allocated ELF sections 0.6% smaller

The raw executable file is 2.5% larger because of the BOLT file layout, despite its smaller allocated sections and compressed artifacts. Shim dispatch was measured in two reversed-order 300-run rounds. These are whole-release results against v2026.7.18, so they include all changes between the releases rather than isolating BOLT alone.

Highlights

  • Workspace inference now spans four ecosystems. mise tasks graph discovers projects and internal dependency edges from Cargo, uv, Go, and Node workspace metadata without needing the underlying toolchain installed, and --explain attributes every project, edge, and task field to its source.
  • Precompiled Ruby binaries are now the default, cutting install times for most users while keeping source builds available on demand.

Added

  • task: Cargo workspaces are now inferred for the task graph. mise parses root and member Cargo.toml files (no cargo binary required) to build cargo:<package> projects and internal edges from normal, dev, build, target-specific, renamed, and inherited workspace = true path dependencies, with provenance surfaced in graph output. (#​11554 by @​jdx)

  • task: uv (Python) workspaces are inferred from pyproject.toml. When [tool.uv.workspace] is present, member globs and exclusions define uv:<package> projects and edges come from [tool.uv.sources] workspace = true / local path entries across main, optional, dependency-group, and legacy dev dependencies — again without invoking uv or Python. (#​11556 by @​jdx)

  • task: Go workspaces are discovered from go.work use directives and each module's go.mod, registering stable go:<module-path> projects without running the go binary. Dependency ordering is supplied explicitly via [monorepo.projects] overrides. (#​11559 by @​jdx)

  • task: workspace providers can now contribute task suggestions. The Node provider imports supported inputs, outputs, cache, and dependsOn metadata from matching turbo.json entries for inferred package scripts, tracking turbo.json as a task definition source. Unsupported Turbo expressions are left unset. (#​11543 by @​jdx)

  • task: mise tasks graph --explain shows provider and metadata-source provenance for every inferred project, dependency edge, task, and provider-suggested field, and --json now serializes the same attribution. Config overrides are labeled as configuration rather than misattributed to inference. (#​11547 by @​jdx)

    mise tasks graph --explain
  • task: mise watch gains a per-task watch.no_vcs_ignore option so tasks can watch sources that are excluded by .gitignore (such as generated files). VCS ignores stay enabled by default to avoid scanning broad build directories; one opted-in task enables it for the combined watch process. (#​11535 by @​Marukome0743)

    [tasks.generate]
    run = "process generated/output.json"
    sources = ["generated/output.json"]
    watch = { no_vcs_ignore = true }
  • task: groundwork for affected-project task selection: mise can now resolve affected Git base/head revisions (with MISE_AFFECTED_BASE/MISE_AFFECTED_HEAD overrides and CI auto-detection for GitHub Actions and GitLab), map changed files to the workspace projects that own them, and expand that set through transitive reverse-dependency edges across providers. (#​11585, #​11569, #​11583 by @​jdx)

Changed

  • ruby: precompiled Ruby binaries are now the default when ruby.compile is unset — installs try jdx/ruby binaries first and fall back to a source build when none are available. Set ruby.compile = true to force a source build as before. (#​11584 by @​jdx)

Fixed

  • config: --path <dir> now targets a config file inside that directory for use, unuse, set, unset, dotfiles add, and the system subcommands. Previously --path was silently discarded when the current directory already had a config in scope, so mise unuse --path ../other could remove a tool from the wrong file. (#​11575 by @​JamBalaya56562)
  • task: Ctrl-C is now treated as an interruption rather than a task failure. mise run stops starting new work, exits with status 130, and no longer prints no exit status or task failed, while still allowing post-dependency cleanup to run. (#​11511 by @​Marukome0743)
  • task: sources and outputs now support brace globs (e.g. {a,b}/**), and literal single-element braces are preserved rather than being mangled. (#​11555, #​11565 by @​Marukome0743)
  • python: mise run --tool python@3.12 now honors the selected interpreter when creating a _.python.venv, instead of building the venv from the first [tools] python entry. (#​11567 by @​JamBalaya56562)
  • unuse: mise unuse node@20 on node = ["20", "22"] now removes only the matching version and preserves the rest, including structured options and .tool-versions entries. The whole tool key is removed only for an unversioned request or after the last version is unused. (#​11563 by @​Marukome0743)
  • env: an explicit redact = false on a variable now excludes it from matching redactions patterns, so a short opted-out value no longer leaks into the global scrubber and partially redacts unrelated secrets. (#​11564 by @​jdx)
  • hook-env: if a shell command overwrites a mise-managed variable or removes a PATH entry added by mise, hook-env now detects the drift and restores it, while leaving user-owned variables, added PATH entries, and PATH reordering untouched. (#​11568 by @​Marukome0743)
  • dotfiles: symlink-each no longer recursively walks shared targets like ~ for status, apply, and unapply. mise now records exact source-to-target pairs in a manifest under $MISE_STATE_DIR/dotfiles, avoiding traversal of unrelated and unreadable home-directory trees. Existing installs are backfilled on their next apply. (#​11549 by @​jdx)
  • asdf: dependencies declared via [tools].depends are now on the PATH given to bin/download and bin/install scripts during the same mise install, fixing first-install failures where a dependency's executable was still missing. bin/install now also fails when it installs nothing. (#​11531 by @​Marukome0743, #​11553 by @​JamBalaya56562)
  • vfox: plugins whose pre_install hook returns a sha1 or md5 checksum are now verified instead of panicking with not implemented: sha1. (#​11536 by @​JamBalaya56562)
  • aqua: checksum files that carry a byte-order mark are now read correctly, and the checksum manifest is fetched with the text-fetching path again. (#​11552, #​11558 by @​JamBalaya56562)
  • brew-cask: direct cask pours are hardened with transactional activation, content-fingerprinted receipts, validated paths, and structured terminate_process/postflight handling, covering current cask shapes such as Cloudflare WARP, TablePlus, Zoom, OrbStack, Surge, Plex Media Server, and Zed Preview. Homebrew-owned casks are left byte-for-byte untouched. (#​11215 by @​donbeave)
  • forgejo: the new fj macOS key path is now supported. (#​11545 by @​jdx)
  • github, gitlab: gh/glab config is now found on Windows. (#​11508 by @​JamBalaya56562)
  • http: HTTP client initialization failures are now handled gracefully instead of aborting. (#​11561 by @​Marukome0743)

Performance

  • shim: shims reuse the resolved toolset and config roots, reducing per-invocation overhead. (#​11534 by @​jdx)
  • task: workspace discovery caches its filesystem access. (#​11562 by @​jdx)
  • release: the Linux x64 binary is optimized with BOLT and overall release binary size is reduced. (#​11533, #​11520 by @​jdx)

Documentation

Registry

Full Changelog: jdx/mise@v2026.7.18...v2026.8.0

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

AI-assisted — Tool: Codex; model: unavailable/unavailable; version: unavailable.

v2026.7.18: : Monorepo task ergonomics and a broad round of fixes

Compare Source

This release refines mise's experimental monorepo task workflow with relative dependency paths and a compact dependency tree view, and lands a wide batch of fixes across Cargo installs, plugins, PATH handling, Windows program resolution, Aqua locks, GitLab pagination, and more.

Added

  • task: mise tasks deps gains a --compact flag that expands each shared dependency subtree only once and marks later references as (already shown), keeping every incoming edge visible while avoiding the recursive blow-up that wildcard-heavy monorepo graphs produced. Default output is unchanged unless you pass the flag. (#​11502 by @​jdx)

    mise tasks deps --compact
  • task: monorepo task dependencies now support ./-prefixed relative paths, resolved from the declaring task's own monorepo location, so one aggregate declaration works unchanged at the root, in nested apps, and in leaves without hard-coded absolute paths. Trailing ... patterns now include the base project itself in addition to its descendants. (#​11503 by @​jdx)

    [tasks.test]
    depends = [{ task = "./...:groups:tests:*", optional = true }]

Fixed

  • cargo: installs now record the effective install options (features, default-features, bin, crate, locked) and reinstall automatically when any of them change, so changing feature flags or the selected binary no longer silently reuses the wrong artifact. Incompatible shared/system installs are shadowed in your primary install directory instead of being modified. (#​11480 by @​Marukome0743)
  • plugins: [plugins] entries can now point at local filesystem paths (absolute, ~/, or explicit .//../ relative to the config root). Local asdf, vfox, vfox-backend, and package plugins are installed as symlinks so source edits take effect immediately, while Git URLs, refs, archives, and file:// sources keep their existing behavior. (#​11487 by @​Marukome0743)
  • plugins: batch plugins install, plugins install --all, and plugins update now finish every plugin even when one fails, preserving successful changes and reporting all failures together (in deterministic order) with a failing exit status. (#​11490 by @​Marukome0743)
  • env: computed environments (mise env, mise x child PATHs, mise doctor) now collapse exact duplicate PATH entries first-wins, fixing the runaway _.path accumulation that appeared in nested shells and IDE terminals that inherit an activated PATH without mise's state vars. The live shell PATH is intentionally left untouched. (#​11491 by @​JamBalaya56562)
  • install: installing a tool no longer touches your loaded config files, so editors stop reporting spurious "file changed on disk" warnings. hook-env still detects installs and PATH changes via the mise data directory. (#​11495 by @​Marukome0743)
  • prune: mise prune --tools no longer discards references from untrusted idiomatic version files and plain .tool-versions, preventing removal of versions still in use by other projects. (#​11501 by @​jdx)
  • monorepo: idiomatic_version_file_enable_tools set in a config root's own [settings] is now honored by monorepo-wide commands like mise ls --monorepo and mise install --monorepo, instead of only being applied when mise runs from inside that root. (#​11463 by @​kaii-zen)
  • asdf: bin/list-all and bin/latest-stable scripts now receive your resolved mise [env] values, removals, and _.path additions, so plugins that need a credential or helper on PATH can list versions. Caches are partitioned per environment so results are never reused across differing configs. (#​11492 by @​Marukome0743)
  • aqua: locked HTTP installs (such as Cabal artifacts on downloads.haskell.org) again retain prefix-scoped format and file metadata, so archives are extracted correctly rather than copied as the executable. (#​11499 by @​jdx)
  • gitlab: authentication headers are now sent on every page of paginated release/tag requests, fixing anonymous page-2 requests on private or rate-limited GitLab projects when MISE_LIST_ALL_VERSIONS is set. (#​11507 by @​JamBalaya56562)
  • backend (Windows): mise now resolves a genuinely spawnable program instead of a bare name, fixing program not found errors when a tool is present only as a .cmd shim (for example a scoop- or pip-installed pipx.cmd). Interpreter-only files such as .ps1 and .vbs are recognized correctly, with .vbs file tasks routed through cscript. (#​11486, #​11489 by @​JamBalaya56562)
  • watch: mise watch --wrap-process group is now honored on macOS instead of being silently dropped for watchexec's platform default of session. The --help text also documents the platform-dependent defaults. (#​11512 by @​JamBalaya56562)
  • lockfile: monorepo legacy path discovery is now cached, avoiding redundant work during lockfile operations. (#​11500 by @​jdx)

Registry

New Contributors

Full Changelog: jdx/mise@v2026.7.17...v2026.7.18

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

v2026.7.17: : Monorepo Task Inference and Root Defaults

Compare Source

This release builds out mise's experimental monorepo task story: Node workspaces now infer project dependency graphs, import package scripts as first-class tasks, and can share configuration through root task defaults and upstream (^task) dependencies. It also adds per-tool control over idiomatic version files, a smoother dotfiles workflow, and a batch of fixes across shell activation, hook-env, Homebrew casks, Aqua, and Python uv environments.

Highlights

  • Node monorepo workspaces gain end-to-end task support: inferred project dependency edges, imported package.json scripts as node:<package>#<script> tasks, root task defaults shared by task name, and experimental ^task upstream dependencies for "build upstream projects first" ordering.
  • New optional = true task dependencies run when they match and are silently skipped when they don't, and idiomatic version files can now be disabled per tool so .nvmrc and package.json no longer fight over your Node version.
  • A round of environment and shell fixes stops hook-env from reloading every prompt after unrelated file writes, keeps the fish cd hook working during compound commands, and fixes zsh activation under POSIX_IDENTIFIERS.

Added

  • task: Node workspace packages now expose their package.json scripts as mise tasks without needing a mise.toml in every package. Scripts get stable IDs like node:@&#8203;scope/app#build plus monorepo path aliases such as //packages/app:build, run in their package root through the detected package manager (npm/pnpm/Yarn/Bun) with raw argument passthrough, and explicit tasks take precedence while keeping both names linked. (#​11466 by @​jdx)

  • task: Node workspaces now infer project dependency edges by matching declared internal package names (dependencies, devDependencies, optionalDependencies, peerDependencies) to other discovered packages, surfaced through mise tasks graph. This is the graph that powers dependency-aware ordering. (#​11435 by @​jdx)

  • task: experimental root task defaults via [monorepo.task_defaults.<name>] in the root mise.toml, applied by task name to both inferred and explicit workspace tasks. Task-local config and extends templates still win. (#​11473 by @​jdx)

    [monorepo.task_defaults.build]
    sources = ["src/**", "package.json"]
    outputs = ["dist/**"]
    cache = { enabled = true }
    
    [monorepo.task_defaults.test]
    env = { NODE_ENV = "test" }
  • task: experimental ^task upstream dependency syntax so a task can require the same task in every upstream workspace project before it runs, expanding through the project graph (including transitive upstreams) and skipping projects that lack the task. Supported in depends only. (#​11476 by @​jdx)

    [monorepo.task_defaults.build]
    depends = ["^build"]
  • task: optional dependencies via optional = true on structured task dependencies. Optional deps run all matches when present and are silently omitted when nothing matches, while invalid selectors still error. Works across depends, depends_post, and wait_for. (#​11471 by @​jdx)

  • config: idiomatic_version_file_disable_files lets you disable individual idiomatic version files per tool using tool:filename pairs, so you can keep .nvmrc selecting Node while ignoring package.json devEngines, with pnpm still reading package.json. (#​11470 by @​jdx)

    mise settings add idiomatic_version_file_disable_files node:package.json
  • dotfiles: mise bootstrap dotfiles add now applies captured entries by default (use --no-apply for capture-only workflows), moves real paths into the dotfiles source before linking, normalizes and sorts [dotfiles] entries, and reports config writes and concrete apply actions, with rollback on failure. (#​11451 by @​jdx)

Fixed

  • hook-env: creating an unrelated file in a config-search ancestor directory no longer forces env._.source and full config reloads to re-run on every prompt indefinitely. Forced fast-path runs now always refresh the session. (#​11458 by @​Marukome0743)
  • activate: the fish directory-change hook now stays active while commands run, so each cd in a compound command applies the matching mise environment immediately, matching Bash and Zsh behavior. (#​11478 by @​Marukome0743)
  • activate: zsh activation now works with POSIX_IDENTIFIERS enabled; MISE_* changes are captured correctly instead of hitting a bad math expression error. (#​11467 by @​jdx)
  • brew: Homebrew casks using the new command_wrapper artifacts and structured run lifecycle steps (for example Firefox and OrbStack) now install and reconcile correctly instead of failing on unknown metadata. (#​11472 by @​jdx)
  • aqua: version overrides now match their version_prefix family before evaluating constraints, so packages with multiple tag families (like oxlint's oxlint_v and apps_v) resolve to the right override. Locked installs also parse the release tag from the download URL so prefix-scoped overrides apply. (#​11469, #​11482 by @​jdx)
  • python: uv auto-venv now respects UV_PROJECT_ENVIRONMENT when selecting, creating, and activating the virtual environment (resolving relative paths from the workspace root), and folds the resolved path into env cache keys so alternate venv locations are honored. (#​11475 by @​Marukome0743)
  • lockfile: shim resolution with explicit unified monorepo lockfiles ([monorepo] lockfile = true) no longer rescans every configured monorepo root per tool, removing repeated filesystem traversal on the hot path. (#​11468 by @​jdx)
  • config: alias and bootstrap writers, aliased tool keys, and version arrays now preserve surrounding comments when rewriting mise.toml. (#​11453, #​11474, #​11454 by @​JamBalaya56562)
  • self-update: when self-update is disabled and no packager instructions file exists (as on Homebrew and Arch installs), mise now shows a generic upgrade hint instead of reporting an out-of-date version with no follow-up advice. (#​11449 by @​JamBalaya56562)
  • task: source metadata hashes now include mtime, improving change detection for task sources. (#​11455 by @​JamBalaya56562)

Documentation

Full Changelog: jdx/mise@v2026.7.16...v2026.7.17

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

v2026.7.16: : Task Workspaces, MCP Command Effects, and Dotfiles Cleanup

Compare Source

This release expands the experimental task output cache with per-run controls, a configurable cache directory, and command-derived cache inputs, and lays the groundwork for monorepo-aware task workspaces starting with Node discovery. It also teaches mise mcp to expose each command's read/write/destructive effect to agents, consolidates dotfiles management under mise bootstrap, and lands a broad batch of fixes across brew, npm, tasks, config rewriting, and OCI pushes.

Highlights
  • The experimental task output cache gains per-run controls (--task-cache / MISE_TASK_CACHE), a configurable task.cache_dir, and cache.command_inputs so cache keys can fold in runtime state like compiler versions.
  • New experimental workspace project graph model with Node monorepo discovery (npm, pnpm, Yarn, Bun) via Aube, the foundation for monorepo-aware affected-project and task inference.
  • mise mcp can now tell agents what a command does: the new list_commands tool returns each command's read/write/destructive effect so agents can reason about safety before running anything.
Added
  • task: per-run cache controls via --task-cache <mode> and MISE_TASK_CACHE, supporting read-write (default), read-only, write-only, off, and local-only. Read-only lets untrusted CI jobs consume existing results without publishing misses, write-only warms the cache without consuming entries, and off gives a clean diagnostic path while preserving normal sources freshness. Honored by mise run and bootstrap/naked task entry points. (#​11396 by @​jdx)

  • task: experimental task.cache_dir setting and MISE_TASK_CACHE_DIR to place task output artifacts on dedicated volumes or project-specific locations without relocating mise's entire cache. mise cache clear and mise cache prune cover the custom location. (#​11399 by @​jdx)

  • task: experimental cache.command_inputs so cacheable tasks invalidate on command-derived state (like node --version or a generated config fingerprint) that isn't captured by source files. Each command runs in the task directory with the resolved tool environment, and its text plus stdout/stderr hashes fold into the cache key. (#​11381 by @​jdx)

    [tasks.build]
    run = "..."
    sources = ["src/**/*.rs"]
    outputs = ["dist/app"]
    cache = { enabled = true, command_inputs = ["rustc --version"] }
  • task: experimental workspace project graph model and provider interface, the ecosystem-neutral foundation for Node, Cargo, uv, and Go monorepo discovery, plus Node workspace discovery for npm, pnpm, Yarn, and Bun monorepos powered by Aube's shared manifest parsing and workspace-confined scanning. (#​11400, #​11418, #​11420, #​11422, #​11424, #​11427, #​11430, #​11445 by @​jdx)

  • mcp: new list_commands tool exposing mise's command tree with each command's declared effect (read, write, destructive, or unclassified), help text, and hidden status, so agents can see what a command does before invoking it. An optional include_hidden controls visibility, and unclassified is explicitly treated as unknown rather than safe. (#​11389 by @​jdx)

  • cargo: cargo.binstall_native graduates from experimental and can now discover conventionally named GitHub release artifacts from a crate's linked repository when package.metadata.binstall is absent, so more precompiled binaries install without crate-specific configuration. It also works under the default locked = true path. (#​11433 by @​jdx)

  • dotfiles: new mise bootstrap dotfiles unapply (with hidden mise dotfiles unapply compatibility alias) to remove managed symlinks, copies, templates, and edit blocks while preserving unmanaged content. Supports target filters, --dry-run, --yes, and requires --force for modified or ambiguous content. (#​11437 by @​jdx)

  • bootstrap: dotfiles management is now consolidated under mise bootstrap dotfiles (add, edit, apply, status), which runs pre-dotfiles/post-dotfiles hooks correctly. The top-level mise dotfiles command is hidden and deprecated (warnings in 2027.2.0, removal in 2028.2.0) but still works. (#​11436 by @​jdx)

  • bootstrap: added bs as a visible shorthand alias for mise bootstrap. (#​11439 by @​jdx)

  • spm: new install_command option for source installs runs a custom command from the checked-out package, and fails the install when the command exits successfully but installs nothing into bin/ (protecting against scripts that swallow build failures). (#​11369 by @​Marukome0743)

Fixed
  • backend: a network failure while listing remote versions is now reported as a fetch failure instead of a misleading "no versions found matching date filter". The failure is memoized per process to avoid redundant HTTP retries, cutting duplicate warning spam and install time roughly in half in the failing case. (#​11391 by @​jdx)
  • config: mise use, mise up --bump, and mise set now preserve trailing inline comments when rewriting mise.toml, matching the existing behavior for comments above a line and for .tool-versions. (#​11415 by @​JamBalaya56562)
  • oci: chunked mise oci push now accepts 201 Created on the chunk PATCH, fixing large-layer pushes to AWS ECR that previously failed with blob chunk upload failed: 201. (#​11376 by @​fire-ant)
  • npm: tools resolved from a mise.lock pin are now trusted through aube's low-download popularity gate for the requested package, so reproducing an existing lockfile no longer requires allow_low_downloads. First-time unlocked installs and OSV malicious-package checks are unchanged. (#​11384 by @​jdx)
  • npm: aube confirmation prompts are now routed through mise's shared prompt path. (#​11441 by @​jdx)
  • pipx: no longer suggests uv when uvx is disabled for the package. (#​11373 by @​JamBalaya56562)
  • dotfiles: symlink-each now prunes stale mise-managed symlinks left behind when a source file is deleted (reporting them as drift in mise dotfiles status), collapses emptied directories, and gains exclude glob patterns for directory-walking modes, while leaving unmanaged files and user links untouched. (#​11388 by @​jdx)
  • brew: maintain linked-keg compatibility records (#​11371 by @​benjaminwestern), adopt existing cask completion links (#​11383 by @​jdx), and use the download client for artifacts (#​11428 by @​jdx).
  • aqua: preserve legacy root binary layouts so tools that expect binaries at the install root keep working. (#​11397 by @​jdx)
  • shim: missing executables are now attributed to the configured tool that should provide them. (#​11398 by @​jdx)
  • bootstrap: the generated install script honors MISE_VERSION and MISE_INSTALL_PATH (#​11401 by @​JamBalaya56562), and mise-managed mas is now detected (#​11429 by @​jdx).
  • generate: git pre-commit hooks respect quiet flags (#​11310), use the current env directive syntax (#​11311), and resolve hooks correctly in git worktrees (#​11313) — all by @​Marukome0743.
  • task: support mixed file task dependencies (#​11382 by @​jdx), deduplicate equivalent task sources (#​11204 by @​risu729), support multi-line arrays in file task headers (#​11412 by @​Marukome0743), allow false to override script headers (#​11112 by @​risu729), and treat a missing content-hash baseline as stale (#​11447 by @​JamBalaya56562).
  • link: reject selector-style link requests. (#​11218 by @​risu729)
  • progress output no longer repaints over interactive confirmation prompts; the shared renderer is now suspended while a prompt owns the terminal. (#​11421 by @​jdx)
Documentation
Registry
New Contributors

Full Changelog: jdx/mise@v2026.7.15...v2026.7.16

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

v2026.7.15: : Experimental Task Output Caching

Compare Source

This release lands the first version of experimental local task output caching, letting eligible tasks restore their declared outputs and replay their logs without rerunning. It also adds structured registry idiomatic-version-file parsing, a standalone Aube installer mode, and a broad batch of task, Homebrew, shell, and Windows path fixes.

Highlights
  • Experimental local task artifact caching restores task outputs (and replays their logs) across deletions, checkouts, and unchanged CI runs, with cache keys derived from source contents, task config, tools, and environment. It works for tasks that produce files, tasks with no filesystem outputs, and multi-task graphs, and stays opt-in and conservative on any failure.
  • Registry-backed tools can now parse idiomatic version files (like dagger.json, Taskfile.yml, .chezmoiversion, and 8 more) in-process, with no plugin or shell execution.
Added
  • task: experimental, opt-in local artifact caching. Tasks with sources and explicit outputs can restore their outputs from a content-addressed cache instead of rerunning, and successful stdout/stderr are replayed through whatever output mode the current run uses. Cache keys combine source contents, task configuration and arguments, declared and allowlisted ambient environment, resolved tools, OS, and architecture. Cache failures degrade to misses or warnings rather than failing a task. (#​11328, #​11347 by @​jdx)

    [tasks.build]
    run = "..."
    sources = ["src/**/*.rs"]
    outputs = ["dist/app"]
    cache = { enabled = true, env = ["CI"] }
  • task: dependency artifact keys now fold into a task's cache key, so downstream tasks reuse cached outputs when their dependencies resolve to the same artifacts, and an upstream input change correctly invalidates downstream results. (#​11340 by @​jdx)

  • task: result-only caching via outputs = [] for checks like lint, test, and typecheck that produce no files. Their successful result and replayable logs are cached without writing an archive. (#​11351 by @​jdx)

  • task: reusable and global cache inputs. Define named [task_config.input_groups] referenced from sources as @group:<name>, and task_config.global_inputs to apply config-rooted patterns to every task in scope, so shared lockfiles and toolchain files no longer need repeating per task. (#​11356 by @​jdx)

  • task: task_config.global_env for scoped environment inputs that participate in cache keys, plus pass_through_env / task_config.global_pass_through_env to keep selected ambient variables (like tokens) available under deny_env without affecting cache keys. (#​11363 by @​jdx)

  • task: outputs now support ordered ! exclusions and re-inclusions (mirroring sources), with \! escaping. Excluded paths are omitted from freshness hashes and cache archives, and existing excluded files are preserved on restore. (#​11367 by @​jdx)

  • task: task_config.shell sets a project-scoped default shell for tasks, with task-local and template shell still taking precedence. This gives users a safe migration path after the 2026.7.14 change that ignored project-level default shell-arg settings. (#​11354 by @​jdx)

  • config: registry idiomatic_files entries can now define structured version_regex, version_json_path, and version_expr parsers, adding in-process idiomatic version-file parsing for 11 tools including Dagger, Task, chezmoi, CMake, Earthly, golangci-lint, GoReleaser, Lefthook, Pixi, pre-commit, and Ruff. Parsing runs without executing plugin or shell code, and remains opt-in per tool. (#​11341 by @​jdx)

    mise settings add idiomatic_version_file_enable_tools dagger task lefthook
  • npm: new npm.package_manager = "aube_cli" mode installs npm: tools through a separately installed standalone Aube executable while mise still resolves versions itself, avoiding Aube's npm compatibility shim. The default embedded aube behavior is unchanged. (#​11357 by @​jdx)

  • deps: explicitly configured mise deps providers that are currently inapplicable now stay visible. mise deps --list shows an active/inactive status with a reason (e.g. inactive (missing package-lock.json)), and mise deps <provider> --explain or an explicit run fails with that reason instead of silently disappearing. (#​11182 by @​risu729)

Fixed
  • task: source_freshness_hash_contents = true now skips mtime comparison entirely, so tasks no longer re-run on every CI job after a cache restore resets timestamps. Output integrity is tracked with a content hash that also detects missing, partially deleted, and modified outputs. (#​11319 by @​rabadin)
  • task: confirming (or auto-confirming) the executable-bit prompt for a file task now runs the task in the same mise run, instead of chmod-ing the file and still failing with "no task found". Respects --yes, MISE_YES, and the trusted yes setting. (#​11337 by @​jdx)
  • task: circular dependency detection now runs on the fully resolved graph, so cycles through wait_for, {{usage.*}} dependencies, and depends_post are reported with a concrete path before any task runs, while valid post-dependency graphs are no longer rejected. (#​11329 by @​jdx)
  • task: $ ... task headers now display forwarded arguments accurately for inline and shebang tasks, no longer making multiline tasks appear to pass args to their first command. (#​11344 by @​jdx)
  • task: --output and MISE_TASK_OUTPUT overrides now honor raw and interactive tasks the same way task.output config does, fixing mixed command/timing output for tasks that need inherited stdio. (#​11355 by @​jdx)
  • brew: mise bootstrap packages upgrade no longer fails to link kegs when formulae were already installed and linked by real Homebrew. mise now recognizes brew's directory symlinks, resolves link targets one hop like brew does, and expands directory symlinks into real directories before linking. This also fixes second-upgrade failures for formulae shipping versioned dylib aliases in pure-mise setups. (#​11320 by @​mjun0812)
  • brew: mise bootstrap packages prune now correctly removes a keg's unversioned dylib alias links instead of leaving them dangling. (#​11330 by @​mjun0812)
  • env: ~/ paths now expand using the platform path separator, so Windows install and tool locations no longer surface mixed separators (e.g. C:\Users\me\.local/share/mise) through mise where, shims, and related output. (#​11312 by @​JamBalaya56562)
  • shell: mise activate pwsh now works under Set-StrictMode, guarding uninitialized globals that previously aborted activation, fixing a bare mise invocation, restoring chpwd hook chaining, and silencing command-not-found errors when PSReadLine is unavailable. (#​11314 by @​JamBalaya56562)
  • backend: a plugin whose backend is listed in disable_backends no longer shadows the registry entry, so a registry shorthand falls back to an enabled backend instead of failing to install. Already-installed tools keep reporting their recorded backend. (#​11362 by @​JamBalaya56562)
  • generate: mise generate task-docs --inject now errors with a clear message when the <!-- mise-tasks --> markers are missing or reversed, instead of truncating or clobbering the target file. (#​11359 by @​JamBalaya56562)
  • mcp: the MCP initialize response now reports the server as mise at mise's version, instead of inheriting rmcp's default identity. (#​11361 by @​jdx)
Documentation
Registry
New Contributors

Full Changelog: jdx/mise@v2026.7.14...v2026.7.15

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

v2026.7.14: : Multi-asset GitHub installs, safer defaults, and Windows pip

Compare Source

This release adds overlay installs for GitHub-based tools, closes a config-trust security gap around default shell arguments, and lands a wide batch of correctness fixes across tasks, lockfiles, npm, Swift, brew casks, and Windows Python.

Added
  • github: the GitHub/GitLab/Forgejo release backend now accepts additional_asset_patterns, so a single install can overlay multiple release archives from the same tag into one installation directory. Each supplemental artifact is locked and verified (checksums and provenance) on its own, and --locked fails if the r

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 4am on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Aug 3, 2026
@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Aug 3, 2026
@renovate
renovate Bot enabled auto-merge (squash) August 3, 2026 01:15
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark results

Benchmark run finished with conclusion skipped for 165fe4d46e650f2752d157a4a6bde3ac77bd86b1.

Benchmark summary artifact was not found; see the workflow run for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants